home *** CD-ROM | disk | FTP | other *** search
/ Workbench Design / WB Collection.iso / icon sammlungen / mwb archive / tobiicons_2_0.lha / Tobi_Icons-2.0 / ilbm2ascii.rexx < prev    next >
OS/2 REXX Batch file  |  1994-06-15  |  5KB  |  181 lines

  1. /*
  2.  *  $VER: ILBM->ASCII.rexx (2.4.94)
  3.  *
  4.  *  Written by Tobias Ferber, ukjg@rz.uni-karlsruhe.de
  5.  */
  6.  
  7. ilbmfile  = ""
  8. asciifile = ""
  9. tempfile  = "T:ILBMASCII." || pragma('Id')
  10. template  = "FROM/A,TO/K/A"
  11. args      = ""
  12.  
  13. OPTIONS FAILAT 10
  14.  
  15. /* parse args */
  16.  
  17. IF ( ARG() < 1 ) | ( (ARG() = 1) & ARG(1)= '?' )  THEN DO
  18.   OPTIONS PROMPT template': '
  19.   PARSE PULL args
  20.   END
  21. ELSE DO n=1 FOR ARG() /* RXFB_TOKEN for RX ?! */
  22.   args= args || ARG(n)
  23.   END
  24.  
  25. DO WHILE WORDS(args) > 0
  26.   av= next_arg()
  27.   SELECT
  28.     WHEN UPPER(av) = "FROM" THEN DO
  29.       IF WORDS(args) > 0 THEN ilbmfile= next_arg()
  30.       ELSE EXIT bad_args("Missing ILBM filename after FROM keyword")
  31.       end /* FROM */
  32.     
  33.     WHEN UPPER(av) = "TO" THEN DO
  34.       IF WORDS(args) > 0 THEN asciifile= next_arg()
  35.       ELSE EXIT bad_args("Missing ASCII filename after FROM keyword")
  36.       end /* TO */
  37.     
  38.     OTHERWISE DO
  39.       IF av = '?' THEN EXIT bad_args("")
  40.       ELSE ilbmfile= av
  41.       END
  42.     END
  43.   END
  44.     
  45. CALL PRAGMA('W','N')
  46.     
  47.  
  48. /* Try to get missing ILBM filename */
  49.  
  50. IF (WORDS(ilbmfile) < 1) & EXISTS('c:RequestFile') THEN DO
  51.   cwd= PRAGMA('D')
  52.   ADDRESS COMMAND 'RequestFile >' tempfile 'DRAWER "'cwd'" TITLE "Select an ILBM file..." NOICONS'
  53.   IF OPEN('fp',tempfile,'R') THEN DO
  54.     ilbmfile= STRIP(READLN('fp'),'B','"')
  55.     CALL CLOSE('fp')
  56.     ADDRESS COMMAND 'Delete QUIET FILE' tempfile
  57.     END
  58.   END
  59.   
  60. IF WORDS(ilbmfile) < 1 THEN EXIT bad_args("No ILBM input filename")
  61.  
  62. IF ~EXISTS(ilbmfile) THEN DO
  63.   IF EXISTS('c:RequestChoice') THEN
  64.       ADDRESS COMMAND 'RequestChoice >NIL:' 'TITLE   "ILBM->ASCII"',
  65.                                             'BODY    "Failed to locate your ILBM file*n'ilbmfile'"',
  66.                                         'GADGETS "Exit"'
  67.   ELSE SAY 'Failed to locate your ILBM file "'ilbmfile'"'
  68.   EXIT 10
  69.   END
  70.  
  71.  
  72. /* Try to get missing ASCII filename */
  73.  
  74. IF (WORDS(asciifile) < 1) & EXISTS('c:RequestFile') THEN DO
  75.   cwd= PRAGMA('D')
  76.   ADDRESS COMMAND 'RequestFile >' tempfile 'DRAWER "'cwd'" TITLE "Write ASCII output to..." SAVEMODE NOICONS'
  77.   IF OPEN('fp',tempfile,'R') THEN DO
  78.     asciifile= STRIP(READLN('fp'),'B','"')
  79.     CALL CLOSE('fp')
  80.     ADDRESS COMMAND 'Delete QUIET FILE' tempfile
  81.     END
  82.   END
  83.   
  84. IF WORDS(asciifile) < 1 THEN EXIT bad_args("No ASCII output filename")
  85.  
  86. IF EXISTS(asciifile) THEN DO
  87.   IF EXISTS('c:RequestChoice') THEN DO 
  88.     ADDRESS COMMAND 'RequestChoice >' tempfile,
  89.         'TITLE   "ILBM->ASCII"',
  90.     'BODY    "'asciifile 'already exists.*nShall I replace it ?"',
  91.     'GADGETS "YES" GADGETS "NO"'
  92.     IF OPEN('fp',tempfile,'R') THEN DO
  93.       yn= STRIP( READLN('fp') )
  94.       CALL CLOSE('fp')
  95.       ADDRESS COMMAND 'Delete QUIET FILE' tempfile
  96.       END
  97.     IF yn = '1' THEN ADDRESS COMMAND 'Delete QUIET FILE "'asciifile'"'
  98.     END
  99.   ELSE DO
  100.     OPTIONS PROMPT asciifile 'already exists.  Shall I replace it ?  (Y/n) '
  101.     PULL yn
  102.     IF LEFT(yn) ~= 'N' THEN ADDRESS COMMAND 'Delete QUIET FILE "'asciifile'"'
  103.     END
  104.   END
  105.  
  106. IF EXISTS(asciifile) THEN DO
  107.   IF EXISTS('c:RequestChoice') THEN
  108.       ADDRESS COMMAND 'RequestChoice >NIL:' 'TITLE   "ILBM->ASCII"',
  109.                                             'BODY    "Operation canceled"',
  110.                                             'GADGETS "Exit"'
  111.   ELSE SAY 'Operation canceled'
  112.   EXIT
  113.   END
  114.   
  115. ADDRESS COMMAND ilbm2ascii '"'ilbmfile'"' '>' '"'asciifile'"'
  116.  
  117. IF filesize(asciifile) = 0 THEN DO
  118.   IF EXISTS('c:RequestChoice') THEN
  119.       ADDRESS COMMAND 'RequestChoice >NIL:' 'TITLE   "ILBM->ASCII"',
  120.                                             'BODY    "Failed to create' asciifile '*nfrom' ilbmfile '"',
  121.                                             'GADGETS "Exit"'
  122.   ELSE SAY 'Failed to create' asciifile 'from' ilbmfile
  123.   END
  124.  
  125. EXIT
  126.  
  127. /*@*/
  128.  
  129. bad_args: PROCEDURE EXPOSE template
  130.   PARSE ARG str
  131.   IF WORDS(str) > 0 THEN DO
  132.     IF EXISTS('c:RequestChoice') THEN
  133.       ADDRESS COMMAND 'RequestChoice >NIL:' 'TITLE   "ILBM->ASCII"',
  134.                                             'BODY'   transquote(str),
  135.                                         'GADGETS "Exit"'
  136.     ELSE SAY str
  137.     END
  138.   
  139.   SAY "Template:" template
  140.   SAY "Usage: rx ILBM2ASCII.rexx FROM <ilbm file> TO <ascii file>"
  141.   RETURN 10
  142.  
  143.   
  144. /* get the next command-line argument from global 'args' string */
  145.  
  146. next_arg: PROCEDURE EXPOSE args
  147.   args= STRIP(args)
  148.   IF LEFT(args,1) = '"' THEN PARSE VAR args '"' a '"' args
  149.                         else parse var args     a     args
  150.   RETURN STRIP(a,'b','"')
  151.  
  152.  
  153. /* translate '"' into '*"' and '*' into '**' */
  154.  
  155. transquote: PROCEDURE
  156.   PARSE ARG s
  157.   t= s
  158.   q= MAX( LASTPOS('*',s), LASTPOS('"',s) )
  159.   DO WHILE q > 0
  160.     t= INSERT('*',t,q-1,1)
  161.     s= LEFT(s,q-1)
  162.     q= MAX( LASTPOS('*',s), LASTPOS('"',s) )
  163.     END
  164.   RETURN '"' || t || '"'
  165.  
  166.  
  167. /* return the size of a file or '-1' if rexxsupport.library was not available */
  168.  
  169. filesize: PROCEDURE 
  170.   PARSE ARG fname 
  171.  
  172.   lib= SHOW('L',"rexxsupport.library")
  173.   IF ~lib THEN lib= ADDLIB("rexxsupport.library",0,-30,0)
  174.  
  175.   IF lib THEN DO
  176.     fsize= VALUE( WORD(STATEF(fname),2) )
  177.     CALL REMLIB("rexxsupport.library")
  178.     END
  179.   ELSE fsize= -1
  180.   RETURN fsize
  181.